home *** CD-ROM | disk | FTP | other *** search
/ Skunkware 5 / Skunkware 5.iso / src / X11 / mpeg_play-2.1 / check-shift.c < prev    next >
C/C++ Source or Header  |  1995-05-09  |  898b  |  41 lines

  1. /*
  2.  code "borrowed" from JPEG-5 config code
  3. */
  4.  
  5. #include <stdio.h>
  6.  
  7. int is_shifting_signed (arg)
  8.      long arg;
  9. /* See whether right-shift on a long is signed or not. */
  10. {
  11.   long res = arg >> 4;
  12.  
  13.   if (res == -0x7F7E80CL) {    /* expected result for signed shift */
  14.     return 1;            /* right shift is signed */
  15.   }
  16.  
  17.   /* see if unsigned-shift hack will fix it. */
  18.   /* we can't just test exact value since it depends on width of long... */
  19.   res |= (~0L) << (32-4);
  20.  
  21.   if (res == -0x7F7E80CL) {    /* expected result now? */
  22.     return 0;            /* right shift is unsigned */
  23.   }
  24.  
  25.   fprintf(stderr, "Right shift isn't acting as I expect it to.\n");
  26.   fprintf(stderr, "I fear the DCT software will not work at all.\n\n");
  27.   exit(1);
  28. }
  29.  
  30. main()
  31. {
  32.  
  33.   if (is_shifting_signed(-0x7F7E80B1L)) {
  34.     printf("do not define RIGHT_SHIFT_IS_UNSIGNED\n");
  35.   }
  36.   else {
  37.     printf("define RIGHT_SHIFT_IS_UNSIGNED\n");
  38.   }
  39.  
  40. }
  41.